<?php
/**
 * tinymvc超轻量级PHP开发框架
 *
 * @author    Lansn
 * @copyright Copyright (c) 2024-2025
 * @license   tinymvc 遵循Apache2开源协议发布，需保留开发者信息。
 * @link      http://173654757.xyz
 */

namespace system\core;  
  
class Request extends \flight\net\Request  
{  
    /**  
     * 获取 GET 参数  
     */  
    public function get(?string $key = null, $default = null)  
    {  
        if ($key === null) {  
            return $this->query->getData();  
        }  
        return $this->query->$key ?? $default;  
    }  
      
    /**  
     * 获取 POST 参数  
     */  
    public function post(?string $key = null, $default = null)  
    {  
        if ($key === null) {  
            return $this->data->getData();  
        }  
        return $this->data->$key ?? $default;  
    }  
      
    /**  
     * 获取请求参数（先从 POST 查找，再从 GET 查找）  
     */  
    public function input(string $key, $default = null)  
    {  
        return $this->post($key) ?? $this->get($key) ?? $default;  
    }  
    
    /**  
     * 获取请求参数（先从 POST 查找，再从 GET 查找）  
     */  
    public function param(?string $key = null, $default = null)  
    {  
        if ($key === null) {  
            return $this->data->getData() ?? $this->query->getData();  
        }   
        return $this->data->$key ?? $this->query->$key ?? $default;  
    }  

    /**  
     * 检查是否为 POST 请求  
     */  
    public function isPost(): bool  
    {  
        return $this->method === 'POST';  
    }  
      
    /**  
     * 检查是否为 GET 请求  
     */  
    public function isGet(): bool  
    {  
        return $this->method === 'GET';  
    }  
      
    /**  
     * 检查是否为 PUT 请求  
     */  
    public function isPut(): bool  
    {  
        return $this->method === 'PUT';  
    }  
      
    /**  
     * 检查是否为 DELETE 请求  
     */  
    public function isDelete(): bool  
    {  
        return $this->method === 'DELETE';  
    }  
      
    /**  
     * 检查是否为 AJAX 请求  
     */  
    public function isAjax(): bool  
    {  
        return $this->ajax;  
    }  
      
    /**  
     * 获取客户端真实 IP  
     */  
    public function getRealIp(): string  
    {  
        return $this->proxy_ip ?: $this->ip;  
    }  
}